歡迎大家再次回來我們這個系列,昨天我們已經介紹過幾個基本可以用在 Face recognition 上的 loss 了,如下圖如人類在 Face Recognition領域上所研究的 loss 發展圖中的 Softmax loss,Contrastive loss,Triplet-loss,Center-loss以及feature normalize的研究:
那今天我們將繼續往下走來到近來最流行的 loss 類別--Large Marginal Loss
Large Marginal Loss 這個 loss 其實是由 softmax loss(cross entropy loss) 所發展而來的,並且有多種變形,毫不畏言的是基本上你聽過目前有名的 face recognition loss 都是在這個範疇內!我們們先來講講這個變形的由來:
   Step.1 一個基本的 softmax loss如下:
      
      其中 w & b 為最後一層 fully connected layer 的參數,如下圖:
      
   Step.2 展開 softmax loss 公式成為以下形式:
      
      其中
      這個視角你可以想做:
每個
w為那個類的中心vector,那我們的訓練目標其實就是希望每個image壓出來的feature都可以與他那一類的中心vector相近
另外這個w舞們也可以稱作proxy,我們是視作這個類的中心代理(前篇center loss的中心為各個訓練資料的feature的平均值)
   Step.3 我們把fully connected layer中weight(w)做 normalize並假設這個 bias 為 0 :
      那整體的 softmax loss 就可以改成modified softmax loss,如下圖:
      
      為什麼可以把 weight 做 normalize 主要是normface實驗發現有做 normalize更好(這也稱為 Norm-softmax),詳可見昨天介紹或下方實驗:
      
      為什麼更進一步可以把 bias 設成 0 主要是Sphereface實驗發現可以刪掉並且 performance 沒什麼變化甚至有時表現可能可以更好!
      而以上這兩種修改法其實也正式分別為‵Normface‵ 以及 Sphereface
   Step.4 加入 Margin
      經過上述步驟,感覺好像只是改寫 softmax loss 的形式而已,還沒有什麼大改?你說得沒錯,我們並還沒加入 margin 的概念,我們先觀察下圖的畫面:
      
      我們可以看到上述左邊改版的 softmax 一樣只會找到各個類的類邊界,剛剛的分開就好,這個在 close-set時或許沒問題,但在Open-set就會發生兩人 feature 在空間中的交界處如果出現第三人的 feature會分不開,因此我們會希望在訓練時能夠像右邊的效果一樣,盡可能與自己的類中心靠近,因此這就需要引入 Margin 的概念,modefied softmax 可以繼續改寫成以下 marginal loss:
      
      其中一共有三種主流變形,連同 softmax 其各自的關鍵參數如下:
      |Name | M1 |M2|M3
      |-----|----|--|--
      |Softmax loss | 1 |0|0
      |Sphereface|m1|0|0
      |Arcface|1|m2|0
      |Cosface|1|0|m3
      
      這當中,softmax 以及Shpereface已於前面小節介紹過了,舞們這裡介紹一下改變 M1 大小是否有幫助?如下圖,我們可以看到 m1越大的時候其實可以分得越開,後續的 Large Marginal loss基本上都會遵從大的 M1(ex.cosface & Arcface 實務上都是大 M1:
      
      在參考更強大 margin 下我們有了 Cosface 以及 Arcface 這兩個非常經典的 Large Marginal loss那這兩個又是什麼的形式以及這兩個又熟強熟弱呢?
這個誰優誰劣其實不好說,那筆者根據自身經驗來跟大家說明:
   1.研究上(論文上)
      依照研究上我們最簡單可以直接參考主流 Benchmark測試集來看效果,那基本上一定是 Arcface會比較好,如下圖:
   2.實務上
實務上,筆者自身經驗會是:
Cosface比Arcface簡單好用,並且更容易收斂
那關於為何會有這樣的效果,筆者目前還未完全掌握,但可以從以下兩部份講 CosFace 為何是個好選擇:
2-1. Cosface 收斂效果足以
會覺得 Cosface 不夠收斂可能是因為 Arcface 論文中這張圖:
依照 Arcface 這張圖的說明當今天訓練資料與類中心今天達到黏在一起時(角度為0)Cosface 的 target logit 還不是 1(我們希望是 1 ,因為這樣 inner product 為貼在一起的意思),並且觀察 Cosface 的斜率也會擔憂這樣 gradient 的大小足夠大嗎?訓練出來的同類相似度夠大嗎?其實到不用擔心這一點,我們可以看到 Arcface 自己本身做的訓練追宗圖如下:
可以看到其實 Arcface 到結束他也沒辦法讓角度為0,而這個角度差距我們拿 Cosface 的最貼緊的角度 inner product 結果 0.8 來算是差不多的!(可自行查一下 arccos(0.6) 是幾度)
2-2. marginal 反效果
如見下圖,我們可以看到當今天 arcface 在訓練時,訓練資料與類中心角度超過 135度時,他的 target logit會越來越大(target logit越大代表角度越小才對),這樣 gradient 會是相反的,你可以看到其他的 loss 像是 cosface 會是越來越小的
我們今天介紹了 Face recogntion loss 中的 Large Marginal Loss ,並且介紹了其中幾個知名的變種以及由來,並針對 Cosface 以及 Arcface做了一個比較,希望能對大家更好了解 Face recognition 的訓練。歡迎大家明晚繼續回來!
1.Wang, Feng, et al. "Normface: L2 hypersphere embedding for face verification." Proceedings of the 25th ACM international conference on Multimedia. 2017.
2.Liu, Weiyang, et al. "Sphereface: Deep hypersphere embedding for face recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
3.Deng, Jiankang, et al. "Arcface: Additive angular margin loss for deep face recognition." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019.
4.Wang, Hao, et al. "Cosface: Large margin cosine loss for deep face recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
5.Li, Xianyang, et al. "Airface: Lightweight and efficient model for face recognition." Proceedings of the IEEE/CVF International Conference on Computer Vision Workshops.2019.